Many modern systems, such as machine vision systems, consist of multiple different components coupled together in such a way that they can communicate and interact with each other. Coupling of the components is usually accomplished using a combination of hardware and software—the hardware provides the tangible physical link between components, while the software controls the hardware and can perform other functions.
While these systems offer many advantages, one disadvantage they have is that different components in the system may operate under different protocols and/or understand different command languages. As such, a user of the system who wants to communicate with a specific component must know both the communication protocol needed to reach the component and the commands understood by the component. In a system with many different components, that means that a user must know multiple different protocols and command languages or structures to be able to interact with all the different components in a system.